def math(a,b)
  yield(a,b) if block_given?
end

def do_math(a,b,&the_proc)
  math(a,b,&the_proc)
end

do_math(1,2) do|a,b|
  p a + b
end
p do_math(1,2)

def my_method(&the_proc)
  the_proc
end

p = my_method {|name| "Hello, #{name}!"}
p p.class
p p.call("Ruby") # Proc块需要延迟调用